'''冒泡排序
lbl1 显示“排序前数据 排序后数据”文本
lbl2 显示“排序过程的加工遍数为”文本
lbl3 显示 加工次数
btn  按钮键，触发冒泡排序函数
lst1 显示排序前数字
lst2 显示排序后数字
times 变量储存加工次数
'''
import tkinter as tk
def maopao():
    a = [44,38,78,37,96,4,45,1]
    i = 0
    flag = True
    list2.delete(0,tk.END)
    while i<len(a) and flag==True:      #冒泡排序
        flag = False
        for j in range(len(a)-i-1):     
            if a[j] > a[j+1]:   
                a[j] , a[j+1] = a[j+1] , a[j]
                flag = True
        print(a)
        i += 1 
    for k in range(len(a)): #输出排序后结果
        list2.insert("end", a[k])
    times.set(i-1) #将加工次数赋值给times 
#建立窗口
win = tk.Tk()
win.title('冒泡排序')
win.resizable(0,0)
#建立组件
lbl1 = tk.Label(win, text = '排序前数据             排序后数据') 
list1 = tk.Listbox(win,width=15)
for item in [44,38,78,37,96,4,45,69]:
        list1.insert("end", item)
list2 = tk.Listbox(win,width=15)
btn = tk.Button(win, text = '排序', command=maopao)
lbl2 = tk.Label(win, text = '排序过程的加工遍数为')
times = tk.StringVar()  
lbl3 = tk.Label(win, textvariable=times)
#布局
lbl1.grid(row=0, column=0,columnspan=2)
lbl2.grid(row=2, column=0)
lbl3.grid(row=2, column=1)
list1.grid(row=1, column=0,padx=5,pady=5)
list2.grid(row=1, column=1,padx=5,pady=5)
btn.grid(row=0, column=2,rowspan=3,padx=10)
#接受窗口事件
win.mainloop()

